﻿using SmartWMS.Common.ResponseOutput;
using SmartWMS.Domain.Base;
using SmartWMS.Domain.BusinessManage;
using SmartWMS.Server.BasicsDatumServer.CategoryService.Dto;
using SmartWMS.Server.BusinessServer.ProcureMentServices.Dto;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace SmartWMS.Server.BusinessServer.ProcureMentServices
{
    public interface IProcureMentService : ITransientServer
    {
        /// <summary>
        /// 采购管理列表
        /// </summary>
        /// <returns></returns>
        Task<Response<List<ProcureMentDtos>>> CatProcureMentList(ProcureSelect select);

        /// <summary>
        /// 销售单号列表
        /// </summary>
        /// <returns></returns>
        Task<Response<List<SalesManagementDto>>> GetSalesCodeList();

        /// <summary>
        /// 添加采购管理表和采购产品关联表
        /// </summary>
        /// <param name="procureMentDto"></param>
        /// <returns></returns>
        Task<Response<bool>> AddProcureMent(ProcureMentDtos procureMentDto);

        /// <summary>
        /// 根据销售单号获取销售单信息
        /// </summary>
        /// <param name="code"></param>
        /// <returns></returns>
        Task<Response<SalesManagementDto>> GetSalesManagementByCode(string? code);

        /// <summary>
        /// 根据采购单号获取采购单信息
        /// </summary>
        /// <param name="code"></param>
        /// <returns></returns>
        Task<Response<ProcureMentDtos>> GetProcureManagementByCode(string? code);

        /// <summary>
        /// 删除采购管理
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        Task<Response<bool>> DeleteProcureMent(ProcureSelect dto);

        /// <summary>
        /// 批量删除采购管理
        /// </summary>
        /// <param name="ids"></param>
        /// <returns></returns>
        Task<Response<bool>> DeleteProcureMentList(List<ProcureSelect> dto);

        /// <summary>
        /// 编辑采购管理
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        Task<Response<bool>> UpdateProcureMent(ProcureMentDtos dto);

        /// <summary>
        /// 采购入账
        /// </summary>
        /// <param name="code"></param>
        /// <param name="dto"></param>
        /// <returns></returns>
        Task<Response<bool>> ProcureInAccount( InAccountDto? dto);

        /// <summary>
        /// 采购退货
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        Task<Response<bool>> ProcureReturn(ProcureReturnDto dto);





    }
}
    